home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 41.zip / BS1 part 41 / Abacus diskdrives IO.adf / CH8 / readsec.c < prev    next >
C/C++ Source or Header  |  1978-06-28  |  3KB  |  147 lines

  1. /*-----------------------------------------------------*/
  2. /*             Read Sector with Trackdisk-Device       */
  3. /*                                                     */
  4. /*                    JEA, 12-07-87                    */
  5. /*-----------------------------------------------------*/
  6. #include <exec/types.h>
  7. #include <exec/memory.h>
  8. #include <devices/trackdisk.h>
  9.  
  10. /*-----------------------------------------------------*/
  11. /*                 Turn Motor on or off                */
  12. /*                                                     */
  13. /*                                                     */
  14. /*-----------------------------------------------------*/
  15. MotorSwitch( iosr, flag )
  16. struct IOStdReq *iosr;
  17. LONG flag;
  18. {
  19.   iosr->io_Command = TD_MOTOR;
  20.    iosr->io_Length = flag;         /* 1=an  and  0=aus */
  21.    DoIO(iosr);
  22. }
  23.  
  24. /*-----------------------------------------------------*/
  25. /*                  Read Logical Block                 */
  26. /*                                                     */
  27. /*                                                     */
  28. /*-----------------------------------------------------*/
  29. LONG *GetBlock( iosr, block, map )
  30. struct IOStdReq *iosr;
  31. LONG block;
  32. LONG *map;
  33. {
  34. LONG *ret = NULL;
  35.  
  36.  
  37.   iosr->io_Command = CMD_READ;
  38.   iosr->io_Length = TD_SECTOR;
  39.   iosr->io_Data = (APTR)map;
  40.   iosr->io_Offset = TD_SECTOR * block;
  41.   DoIO(iosr);
  42.  
  43.   return(ret);
  44. }
  45.  
  46. /*-----------------------------------------------------*/
  47. /*                      Read Sector                    */
  48. /*                                                     */
  49. /*                                                     */
  50. /*-----------------------------------------------------*/
  51. LONG *GetTSH( iosr, track, sector, head, map )
  52. struct IOStdReq *iosr;
  53. LONG track;
  54. LONG sector;
  55. LONG head;
  56. LONG *map;
  57. {
  58. LONG *ret = NULL;
  59.  
  60.    iosr->io_Command = CMD_READ;
  61.    iosr->io_Length = TD_SECTOR;
  62.    iosr->io_Data = (APTR)map;
  63.    iosr->io_Offset = TD_SECTOR*(sector + NUMSECS*head
  64.                               + NUMSECS*NUMHEADS*track );
  65.    DoIO(iosr);
  66.  
  67.    return(ret);
  68. }
  69.  
  70. /*-----------------------------------------------------*/
  71. /*                     Main Program                    */
  72. /*                                                     */
  73. /*                                                     */
  74. /*-----------------------------------------------------*/
  75. main()
  76. {
  77. struct MsgPort *diskport;
  78. struct IOStdReq *diskreq;
  79. LONG *buf;
  80. LONG loop;
  81.  
  82.    buf = (LONG*) AllocMem( 512L, MEMF_CHIP );
  83.  
  84.    diskport = CreatePort( 0L, 0L );
  85.    diskreq = CreateStdIO( diskport );
  86.    OpenDevice( TD_NAME, 0, diskreq, 0 );
  87.  
  88.    MotorSwitch( diskreq, 1L );
  89.  
  90.    GetBlock( diskreq, 0L, buf );
  91.    for( loop=0; loop<128; loop++ ){
  92.       printf( "%lx ", buf[loop] );
  93.    }
  94.    printf( "\n\n" );
  95.  
  96.    GetTSH( diskreq, 0L, 0L, 0L, buf );
  97.    for( loop=0; loop<128; loop++ ){
  98.       printf( "%lx ", buf[loop] );
  99.    }
  100.    printf( "\n" );
  101.  
  102.    MotorSwitch( diskreq, 0L );
  103.  
  104.    CloseDevice( diskreq );
  105.    DeleteStdIO( diskreq );
  106.    DeletePort( diskport );
  107.  
  108.    FreeMem( buf, 512L );
  109. }
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.